home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / andere sprachen / perl5 / perl5.002 / writemain < prev    next >
Encoding:
Text File  |  1996-03-26  |  1.6 KB  |  73 lines

  1. #!/bin/sh
  2. # This script takes the plain miniperlmain.c and writes out perlmain.c
  3. # which includes all the extensions.
  4. # The command line arguments name extensions to be used.
  5. #  E.g.:  sh writemain SDBM_File POSIX > perlmain.c
  6. #
  7.  
  8. orig="$*"
  9. args=''
  10. : Remove any .a suffixes and any leading path components
  11. for file in `echo $orig | sed 's/\.a//g'` ; do
  12.     case "$file" in
  13.     ext/*)    file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'`
  14.         ;;
  15.     lib/auto/*)    file=`echo $file | sed 's:lib/auto/\(.*\)/[^/]*:\1:'`
  16.         ;;
  17.     */*)
  18.         file=`expr X$file : 'X.*/\(.*\)'`
  19.         ;;
  20.     esac
  21.     args="$args $file"
  22. done
  23.  
  24.  
  25. sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c
  26.  
  27.  
  28. if test X"$args" != "X" ; then
  29.     for ext in $args ; do
  30. : $ext will either be 'Name' or 'Name1/Name2' etc
  31. : convert ext into cname and mname
  32. mname=`echo $ext   | sed 's!/!::!g'`
  33. cname=`echo $mname | sed 's!:!_!g'`
  34.  
  35. echo "EXTERN_C void boot_${cname} _((CV* cv));"
  36.     done
  37. fi
  38.  
  39. cat << 'EOP'
  40.  
  41. static void
  42. xs_init()
  43. {
  44. EOP
  45.  
  46. if test X"$args" != "X" ; then
  47.     echo "    char *file = __FILE__;"
  48.     ai=''
  49.  
  50.     for ext in $args ; do
  51.  
  52.     : $ext will either be 'Name' or 'Name1/Name2' etc
  53.     : convert ext into cname and mname
  54.     mname=`echo $ext   | sed 's!/!::!g'`
  55.     cname=`echo $mname | sed 's!:!_!g'`
  56.  
  57.     echo "    {"
  58.     if test "$ext" = "DynaLoader"; then
  59.         : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  60.         : boot_DynaLoader is called directly in DynaLoader.pm
  61.         echo "        newXS(\"${mname}::boot_${ext}\", boot_${cname}, file);"
  62.     else
  63.         echo "        newXS(\"${mname}::bootstrap\", boot_${cname}, file);"
  64.     fi
  65.     echo "    }"
  66.     done
  67. fi
  68.  
  69. cat << 'EOP'
  70. }
  71. EOP
  72.  
  73.